Consulta de Guías Docentes



Academic Year/course: 2019/20

30322 - Network and Service Programming


Syllabus Information

Academic Year:
2019/20
Subject:
30322 - Network and Service Programming
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
Degree:
330 - Complementos de formación Máster/Doctorado
438 - Bachelor's Degree in Telecommunications Technology and Services Engineering
581 - Bachelor's Degree in Telecommunications Technology and Services Engineering
ECTS:
6.0
Year:
438 - Bachelor's Degree in Telecommunications Technology and Services Engineering: 3
330 - Complementos de formación Máster/Doctorado: XX
581 - Bachelor's Degree in Telecommunications Technology and Services Engineering: 2
Semester:
Second semester
Subject Type:
581 - Compulsory
438 - Compulsory
330 - ENG/Complementos de Formación
Module:
---

1. General information

2. Learning goals

3. Assessment (1st and 2nd call)

4. Methodology, learning tasks, syllabus and resources

4.1. Methodological overview

It should be highlighted that the course was designed with both theoretical and practical approaches. Hence, the learning process essentially requires the students to attend the lectures and the practical laboratory lessons, to develop and implement computer programs of growing complexity, and to study individually.

4.2. Learning tasks

The course includes the following learning tasks: 

  1. Instructors will introduce the contents of the course by means of lectures (25 teaching hours).
  2. The resolution of practical problems in the classroom (5 teaching hours)
  3. The development of practical exercises in the laboratory, with the guidance of instructors and implementing theoretical concepts studied in the lectures.  (24 hours: 12 sessions of 2 hours each).
  4. The design, elaboration, and implementation of practical assignments in groups, led by instructors.
  5. The personal work by students.
  6. The customized student support during office hours with the objective of revising and discussing materials and concepts introduced during the course.
  7. The elaboration of written exams, based on theoretical and practical concepts and the submission of theoretical and practical assignments and reports. All of them will be used for the assessment of the students' progress. More details can be found in the Evaluation section.

4.3. Syllabus

  • Programación Concurrent

❍  Introduction to Concurrency

❍  Motivation

❍  Mutual Exclusion and Synchronisation Concepts

❍  Properties of Concurrent Programs: safety, liveness, and priority

❍  Concepts of Process & Thread

❍  Inter-process Synchronisation Mechanisms

❍  Mutual Exclusion Algorithms

❍  Semaphores

❍  Monitors

❍  Mutual and Partial Exclusion Problems

  • Distributed Systems

❍  Introduction to Distributed Systems

❍  Software Architectures

❍  Communication Networks: TCP/IP Architecture

❍  The process to Process Communication: Interface Socket TCP & UDP

❍  Channels and Asynchronous and Synchronous Message-Passing

❍  Client-Server Applications: Stateful and stateless server

❍  Introduction to Middleware Technologies

4.4. Course planning and calendar

The scheduling of the course is defined by the School every academic year.

4.5. Bibliography and recommended resources

http://biblos.unizar.es/br/br_citas.php?codigo=30322&year=2019

Slides, practical problems descriptions, case studies and practical assignments.

They can all be found at http://add.unizar.es


Curso Académico: 2019/20

30322 - Programación de redes y servicios


Información del Plan Docente

Año académico:
2019/20
Asignatura:
30322 - Programación de redes y servicios
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
Titulación:
330 - Complementos de formación Máster/Doctorado
438 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación
581 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación
Créditos:
6.0
Curso:
581 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación: 2
330 - Complementos de formación Máster/Doctorado: XX
438 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación: 3
Periodo de impartición:
Segundo semestre
Clase de asignatura:
581 - Obligatoria
438 - Obligatoria
330 - Complementos de Formación
Materia:
---

1. Información Básica

1.1. Objetivos de la asignatura

La asignatura y sus resultados previstos responden a los siguientes planteamientos y objetivos:

En esta asignatura el alumno aprenderá a enfrentarse al diseño de programas en los que un conjunto de procesos deben ejecutarse concurrentemente y sincronizarse,  así como  los aspectos básicos para ejecutarlos en diferentes computadoras conectados en una red. Se presentarán los conceptos de forma abstracta, de forma que el alumno aprenda a reconocer los diseños, arquitecturas y patrones de comunicación independientemente de tecnologías, estándares o productos concretos.  

1.2. Contexto y sentido de la asignatura en la titulación

Actualmente es difícil encontrar una aplicación “software” que no incluya características propias de sistemas concurrentes y distribuidos. El alumno debe conocer todas las técnicas involucradas en el desarrollo de servicios en la red, desde las técnicas de bajo nivel que le permitan el desarrollo de aplicaciones más eficientes, hasta las técnicas de más alto nivel que le permitan abordar el desarrollo de aplicaciones distribuidas complejas.  El desarrollo del software como servicio precisa de la integración de los conocimientos de redes y de la programación de sistemas concurrentes y distribuidos.

1.3. Recomendaciones para cursar la asignatura

La asignatura es la continuación natural de la asignatura de Fundamentos de Informática presentada en el primer año de estudios, y de Fundamentos de Redes y Tecnologías e Interconexión de redes, ambas de segundo curso. Es necesario que el alumno haya adquirido soltura en el desarrollo de programas secuenciales correctos y conozca los fundamentos de redes y, en concreto, la arquitectura TCP/IP. Es también recomendable que el alumno haya cursado en el semestre anterior la asignatura de Arquitectura de Sistemas, ya que comparten algunos temas clave.

2. Competencias y resultados de aprendizaje

2.1. Competencias

Al superar la asignatura, el estudiante será más competente para...

Capacidad para resolver problemas y tomar decisiones con iniciativa, creatividad y razonamiento crítico

Capacidad para comunicar y transmitir conocimientos, habilidades y destrezas en castellano

Capacidad para usar las técnicas, habilidades y herramientas de la Ingeniería necesarias para la práctica de la misma.

Capacidad de gestión de la información, manejo y aplicación de las especificaciones técnicas y la legislación necesarias para la práctica de la Ingeniería.

Capacidad para aprender de forma continuada y desarrollar estrategias de aprendizaje autónomo

Capacidad para aplicar las tecnologías de la información y las comunicaciones en la Ingeniería

Capacidad para aprender de manera autónoma nuevos conocimientos y técnicas adecuados para la concepción, el desarrollo o la explotación de sistemas y servicios de telecomunicación

Capacidad de utilizar aplicaciones de comunicación e informáticas (ofimáticas, bases de datos, cálculo avanzado, gestión de proyectos, visualización, etc.) para apoyar el desarrollo y explotación de redes, servicios y aplicaciones de telecomunicación y electrónica

Capacidad para utilizar herramientas informáticas de búsqueda de recursos bibliográficos o de información relacionada con las telecomunicaciones y la electrónica

Capacidad de concebir, desplegar, organizar y gestionar redes, sistemas, servicios e infraestructuras de telecomunicación en contextos residenciales (hogar, ciudad y comunidades digitales), empresariales o institucionales responsabilizándose de su puesta en marcha y mejora continua, así como conocer su impacto económico y social

Conocimiento y utilización de los fundamentos de la programación en redes, sistemas y servicios de telecomunicación

Conocimiento y utilización de los conceptos de arquitectura de red, protocolos e interfaces de comunicaciones

   Capacidad de diferenciar los conceptos de redes de acceso y transporte, redes de conmutación de circuitos y de paquetes, redes fijas y móviles, así como los sistemas y aplicaciones de red distribuidos, servicios de voz, datos, audio, vídeo y servicios interactivos y multimedia

2.2. Resultados de aprendizaje

El estudiante, para superar esta asignatura, deberá demostrar los siguientes resultados...

Conoce los problemas generados por el acceso concurrente a datos y recursos, así como los métodos clásicos de comunicación entre procesos

Conoce las características de los sistemas distribuidos, los retos que plantea y las soluciones que se han planteado para los mismos.

Conoce las capas más altas de la arquitectura de la computación basada en red, y más específicamente en los paradigmas y abstracciones que dan soporte a la computación a servicio.

Tiene capacidad de realizar programas con características concurrentes y/o distribuidas y basada en eventos.

Plantea correctamente el problema a partir del enunciado propuesto e identifica las opciones para su resolución. Aplica el método de resolución adecuado e identifica la corrección de la solución

Identifica, modela y plantea problemas a partir de situaciones abiertas. Explora y aplica las alternativas para su resolución. Maneja aproximaciones.

Conoce y utiliza de forma autónoma y correcta las herramientas, instrumentos y aplicativos software disponibles en los laboratorios y lleva a cabo correctamente el análisis de los datos recogidos.

Desarrolla la habilidad de trabajar en equipo para realizar los diseños y configuraciones consideradas, repartiendo la carga de trabajo para afrontar problemas complejos, intercambiando información entre distintos grupos, de manera coordinada y organizada.

2.3. Importancia de los resultados de aprendizaje

En la época en que nos encontramos existe una gran demanda en el desarrollo del software como servicio. Detrás de esta demanda nos encontramos con todos los problemas asociados al  diseño sistemas concurrentes y distribuidos, como son la escalabilidad, la tolerancia a fallo, la necesidad de herramientas que permitan abstraernos de la complejidad del sistema, los patrones de diseño, las arquitecturas software, etc.   Una base sólida en estos aspectos es imprescindible para poder desenvolverse en el mundo profesional, y poder entender las evoluciones tecnológicas que están teniendo lugar.

3. Evaluación

3.1. Tipo de pruebas y su valor sobre la nota final y criterios de evaluación para cada prueba

El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante las siguientes actividades de evaluación. El sistema de evaluación propuesto en esta asignatura consiste en 2 pruebas:

 

1. Prueba práctica en el laboratorio (30%): El objetivo de esta prueba es evaluar los conocimientos y destrezas que han adquirido los alumnos en las sesiones prácticas de laboratorio. Estas sesiones consistirán en la realización utilizando el computador de una serie de ejercicios relacionados con los contenidos de la asignatura. El alumno deberá entregar durante el semestre, en las fechas indicadas por los profesores, las soluciones implementadas para cada uno de los ejercicios planteados para estas sesiones. La entrega en fecha de estas soluciones, le eximirá de realizar la prueba final práctica en el laboratorio. No obstante, de conformidad con la normativa vigente, los alumnos que hubieran superado la prueba práctica durante el curso también podrán presentarse a subir nota en las prueba de evaluación global de la práctica en laboratorio.

 

2. Prueba escrita (70%): En esta prueba se plantearán cuestiones y/o problemas relacionados con el programa impartido en la asignatura. Su tipología y complejidad será similar a los presentados en las sesiones de aula y laboratorio. En general, se valorará la calidad y claridad de las respuestas, así como las estrategias de solución planteadas por los alumnos.

 

Para la superación de la asignatura es condición imprescindible obtener una calificación mayor o igual que 4 puntos sobre 10 en cada una de las dos pruebas (prueba práctica en el laboratorio y prueba escrita). En otro caso, la calificación global será la mínima entre 4 y el resultado de ponderar con los porcentajes mostrados cada parte. La asignatura se supera con una calificación global de 5 puntos sobre 10. 

4. Metodología, actividades de aprendizaje, programa y recursos

4.1. Presentación metodológica general

El proceso de aprendizaje que se ha diseñado para esta asignatura se basa en lo siguiente:

Se debe tener en cuenta que la asignatura tiene una orientación tanto teórica como práctica. Por ello, el proceso de aprendizaje pone énfasis tanto en la asistencia del alumno a las clases magistrales, como en la realización de prácticas en laboratorio, en la realización de programas sencillos de dificultad creciente, y en el estudio individualizado.

 

4.2. Actividades de aprendizaje

El programa que se ofrece al estudiante para ayudarle a lograr los resultados previstos comprende las siguientes actividades...

 

 

1.   La presentación de los contenidos de la asignatura en clases magistrales por parte de los profesores (25 horas presenciales).

2.   La resolución de problemas planteados en clase (5 horas presenciales).

3.   El desarrollo de prácticas por parte de los alumnos, guiadas por los profesores, que desarrollan los conocimientos teóricos (24 horas presenciales, repartidas en 12 sesiones de 2 horas cada una).

4.   La realización y defensa de trabajos prácticos en grupo, tutorizados por los profesores.

5.   El estudio personal de la asignatura por parte de los alumnos.

6.   La atención personalizada al alumno a través de las tutorías con el objetivo de revisar y discutir los materiales y temas presentados en las clases tanto teóricas como prácticas.

7.   La realización de pruebas escritas teórico-prácticas y presentación de informes o trabajos utilizados en la evaluación del progreso del estudiante. El detalle se encuentra en la sección correspondiente a las actividades de evaluación

 

4.3. Programa

  • Programación Concurrente
    • Introducción a la Concurrencia
    • Motivación
    • Conceptos de exclusión mutua y sincronización
    • Propiedades de los programas concurrentes: seguridad, vivacidad, prioridad
    • Noción Proceso /Thread
    • Mecanismos de Sincronización entre procesos
    • Algoritmos de exclusión mutua
    • Semáforos
    • Monitores
    • Problemas de exclusión mutua y parcial
  • Sistemas Distribuidos
    • Introducción a los sistemas distribuidos
    • Arquitecturas Software
    • Redes de Comunicación: Arquitectura TCP/IP
    • Comunicaciones proceso a proceso: Interfaz Socket TCP y UDP
    • Canales y paso de mensajes síncrono y asíncrono
    • Aplicaciones Cliente/Servidor (Servidor con y sin estado)
    • Introducción a las tecnologías Middleware 

4.4. Planificación de las actividades de aprendizaje y calendario de fechas clave

Calendario de sesiones presenciales y presentación de trabajos

El calendario de la asignatura estará definido por el centro en el calendario académico del curso correspondiente.

 

 

 

El calendario detallado de las diversas actividades a desarrollar se establecerá una vez que la Universidad haya aprobado el calendario académico del curso correspondiente. En cualquier caso, las fechas importantes serán anunciadas con la suficiente antelación.

4.5. Bibliografía y recursos recomendados

http://biblos.unizar.es/br/br_citas.php?codigo=30322&year=2019

 

Transparencias, Enunciados de problemas, Casos de estudio y Guiones de prácticas.

Disponibles en http://add.unizar.es.